package utfpr.si.bs.vo;

import java.util.ArrayList;

public class Mochila implements Comparable<Mochila> {
	public static final int PESO_MAX = 25;
	public static final int TAMANHO = 14;
	public static final int FIT_MAX = 100;
	private ArrayList<Objeto> mochila = new ArrayList<Objeto>();

	public Mochila() {
		this.mochila = new ArrayList<Objeto>();
	}

	public Mochila(ArrayList<Objeto> mochila) {
		this.mochila = mochila;
	}

	public ArrayList<Objeto> getMochila() {
		return mochila;
	}

	public void setMochila(ArrayList<Objeto> mochila) {
		this.mochila = mochila;
	}

	public int getPesoTotal() {
		int resultado = 0;
		for (Objeto obj : this.mochila) {
			resultado += obj.getPeso();
		}
		return resultado;
	}

	public int getValorTotal() {
		int resultado = 0;
		for (Objeto obj : this.mochila) {
			resultado += obj.getValor();
		}
		return resultado;
	}

	public int getFitness() {
		if (this.getPesoTotal() == 0 || this.getPesoTotal() > PESO_MAX) {
			return 0;
		} else {
			return (this.getValorTotal() + PESO_MAX / this.getPesoTotal());
		}
	}
	
	public void removePiorObjeto(){
		Objeto pior = new Objeto(1,FIT_MAX);
		for(Objeto obj : this.getMochila()){
			if(obj.getFitness()<pior.getFitness()){
				pior = obj;
			}else{
				continue;
			}
		}
		this.getMochila().remove(pior);
	}

	@Override
	public int compareTo(Mochila obj) {
		return (obj.getFitness() < this.getFitness() ? 1
				: (obj.getFitness() == this.getFitness() ? 0 : 1));
	}

}
